//
//  ChatBubbleView.swift
//  Chatup
//
//  Created by iron man on 2024/2/19.
//

import FirebaseAnalytics
import SwiftUI

struct ChatBubbleView: View {
    let isVip: Bool
    var model: MessageModel
    @State private var topLeft: CGFloat = 0
    @State private var topRight: CGFloat = 8
    @State private var bottomLeft: CGFloat = 8
    @State private var bottomRight: CGFloat = 8
    @State private var isShowingShareView = false
    @State private var isShowingProsscess = false
    @Binding var showToast: Bool
    @State private var dots = "."
    @State private var timer: Timer?
    var body: some View {
        HStack(alignment: .top) {
            if model.isUser {
                Spacer()
            } else {
                ZStack(alignment: .bottomTrailing) {
                    Image(model.robotIcon)
                        .resizable()
                        .frame(width: 28, height: 28)
                }
            }
            ChatBubbleContentView(viewModel: ChatBubbleContentViewModel(model: model))
//
//            if model.messageType == .file {
//                VStack {
//                    Text("📄")
//                        .font(.system(size: 50).weight(.bold))
//                        .foregroundColor(.black)
//                    Spacer().frame(height: 4)
//                    Text(model.message)
//                        .font(.system(size: 10))
//                        .foregroundColor(.white)
//                }
//            } else {
//                VStack(alignment: .leading) {
//                    if model.isStart {
//                        Text(model.message + dots)
//                            .font(.system(size: 14))
//                            .onAppear {
//                                self.timer = Timer.scheduledTimer(withTimeInterval: 0.3, repeats: true) { _ in
//                                    self.dots += "."
//                                    if self.dots.count > 3 {
//                                        self.dots = "."
//                                    }
//                                }
//                            }
//                    } else {
//                        if model.messageType == .text {
//                            Text(model.message)
//                                .font(.system(size: 14))
//
//                        } else if model.messageType == .assetsImage, isVip {
//                            if model.message.hasPrefix("http") {
//                                NetImageView(url: model.message)
//                                    .cornerRadius(5)
////                                Rectangle()
////                                    .foregroundColor(.clear)
////                                    .frame(width: 179, height: 179)
////                                    .background(
////                                        KFImage.url(URL(string: model.message))
////                                          .loadDiskFileSynchronously()
////                                          .cacheMemoryOnly()
////                                          .fade(duration: 0.25)
////
////
////                                    )
////                                    .cornerRadius(5)
//
//                            } else {
//                                Rectangle()
//                                    .foregroundColor(.clear)
//                                    .frame(width: 179, height: 179)
//                                    .background(
//                                        Image(model.message)
//                                            .resizable()
//                                            .aspectRatio(contentMode: .fill)
//                                            .frame(width: 179, height: 179)
//                                            .clipped()
//                                    )
//                                    .cornerRadius(5)
//                            }
//                        } else {
//                            ZStack(alignment: .bottom) {
//                                if model.message.hasPrefix("http") {
//                                    NetImageView(url: model.message)
//                                        .cornerRadius(5)
////                                    Rectangle()
////                                        .foregroundColor(.clear)
////                                        .frame(width: 179, height: 179)
////                                        .background(
////                                            Group {
////                                                KFImage.url(URL(string: model.message)!)
////                                                    .onSuccess { r in
////                                                        print(r)
////                                                    }
////                                                    .placeholder { p in
////                                                        ProgressView(p)
////                                                    }
////                                                    .resizable()
////                                                    .aspectRatio(contentMode: .fit)
////                                                    .padding()
////                                            }
////
////
////                                        )
////                                        .cornerRadius(5)
//
//                                } else {
//                                    Rectangle()
//                                        .foregroundColor(.clear)
//                                        .frame(width: 179, height: 179)
//                                        .background(
//                                            Image(model.message)
//                                                .resizable()
//                                                .aspectRatio(contentMode: .fill)
//                                                .frame(width: 179, height: 179)
//                                                .clipped()
//                                        )
//                                        .cornerRadius(5)
//                                        .blur(radius: 10)
//                                }
//
//                                Button(action: {
//                                    action(model.message)
//                                }) {
//                                    Text(String.i18nText("characters_pic_unlock"))
//                                        .font(.system(size: 12).bold())
//                                        .foregroundColor(.white)
//                                        .frame(width: 80, height: 30)
//                                        .background(Color(red: 0.15, green: 0.75, blue: 0.46))
//                                        .cornerRadius(15)
//                                        .shadow(color: .gray, radius: 5, x: 0, y: 0)
//                                }
//                            }
//                        }
//                    }
//
//                    if model.messageType == .text && model.message != String.i18nText("chat_wrong") {
//                        ZStack(alignment: .bottomTrailing) {
//                            HStack {
//                                Button(action: {
//                                    let pasteboard = UIPasteboard.general
//                                    pasteboard.string = model.message
//                                    showToast.toggle()
//                                    logAnswerCopy()
//                                    hideToastAfterDelay()
//                                }, label: {
//                                    HStack {
//                                        Image("ic_copy")
//                                        Text(String.i18nText("chat_copy"))
//                                            .font(Font.system(size: 12))
//                                            .foregroundColor(.white.opacity(0.5))
//                                    }.padding(.horizontal, 10).padding(.vertical, 8).background(.white.opacity(0.05))
//                                        .cornerRadius(20)
//                                })
//                                if model.isUser {
//                                    Button(action: {
//                                        retryAction(model)
//                                    }, label: {
//                                        HStack {
//                                            Image("ic_retry")
//                                            Text(String.i18nText("reask"))
//                                                .font(Font.system(size: 12))
//                                                .foregroundColor(.white.opacity(0.5))
//                                        }.padding(.horizontal, 10).padding(.vertical, 8).background(.white.opacity(0.05))
//                                            .cornerRadius(20)
//                                    })
//                                } else {
//                                    Button(action: {
//                                        logAnswerShare()
//                                        isShowingShareView.toggle()
//                                    }, label: {
//                                        HStack {
//                                            Image("ic_share")
//                                            Text(String.i18nText("chat_share"))
//                                                .font(Font.system(size: 12))
//                                                .foregroundColor(.white.opacity(0.5))
//                                        }.padding(.horizontal, 10).padding(.vertical, 8).background(.white.opacity(0.05))
//                                            .cornerRadius(20)
//                                    })
//                                }
//                            }
//                        }
//                    }
//                }
//                .padding(14)
//                .background(model.isUser ? Color(red: 0.21, green: 0.84, blue: 0.54).opacity(0.7) : Color(red: 0.15, green: 0.15, blue: 0.2))
//                //                .cornerRadius(14)
//                .foregroundColor(.white)
//                .cornerRadius(model.isUser ? 8 : 0, corners: .topLeft)
//                .cornerRadius(model.isUser ? 0 : 8, corners: .topRight)
//                .cornerRadius(8, corners: .bottomLeft)
//                .cornerRadius(8, corners: .bottomRight)
//            }

            if model.isUser {
                Image("icon_user_avatar")
                    .resizable()
                    .frame(width: 28, height: 28)
            } else {
                Spacer()
            }
        }
        .sheet(isPresented: $isShowingShareView) {
            ShareView()
        }
    }

    func hideToastAfterDelay() {
        DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
            withAnimation {
                showToast.toggle()
            }
        }
    }

    func logAnswerCopy() {
        Analytics.logEvent("chat_answers_copy", parameters: nil)
    }

    func logAnswerShare() {
        Analytics.logEvent("chat_answers_share", parameters: nil)
    }
}
